const cookieparser = process.server ? require('cookieparser') : undefined;

export const state = () => ({
  user: null
})

export const mutations = {
  setUser(state, payload) {
    state.user = payload;
  }
}

export const actions = {
  // nuxt中特殊的action 只会运行在服务端 在初次直出首页时自动调用
  // 主要作用是用来初始化 vuex 中的数据并传给客户端使用
  nuxtServerInit({ commit }, { req }) {
    let user = null;
    if (req.headers.cookie) {
      const parsed = cookieparser.parse(req.headers.cookie);
      try {
        user = JSON.parse(parsed.user);
      } catch (error) {
        // No valid cookie found
      }
    }
    commit('setUser', user);
  }
}